diff options
| author | Khắc Tuấn <khtuankendy@gmail.com> | 2025-07-16 20:04:27 +0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-07-16 20:04:27 +0700 |
| commit | 2974fd89a942f4e3173642b165f228e2af604ae7 (patch) | |
| tree | 179811835f69429d6fc4b7917c8ece2615a74a3b /apps/web/src/app/editor/[project_id] | |
| parent | faf317cd20756b72974b67aaacab1ccf49ec8a86 (diff) | |
| parent | 0554a031c2d8cc8d736172aeaf503d33b0764c04 (diff) | |
| download | opencut-2974fd89a942f4e3173642b165f228e2af604ae7.tar.gz | |
Merge branch 'main' into feature/optimize-timeline-ruler
Diffstat (limited to 'apps/web/src/app/editor/[project_id]')
| -rw-r--r-- | apps/web/src/app/editor/[project_id]/page.tsx | 39 |
1 files changed, 26 insertions, 13 deletions
diff --git a/apps/web/src/app/editor/[project_id]/page.tsx b/apps/web/src/app/editor/[project_id]/page.tsx index f48d032a..d9d8a08c 100644 --- a/apps/web/src/app/editor/[project_id]/page.tsx +++ b/apps/web/src/app/editor/[project_id]/page.tsx @@ -1,7 +1,7 @@ "use client"; -import { useEffect } from "react"; -import { useParams } from "next/navigation"; +import { useEffect, useRef } from "react"; +import { useParams, useRouter } from "next/navigation"; import { ResizablePanelGroup, ResizablePanel, @@ -34,26 +34,39 @@ export default function Editor() { const { activeProject, loadProject, createNewProject } = useProjectStore(); const params = useParams(); + const router = useRouter(); const projectId = params.project_id as string; + const handledProjectIds = useRef<Set<string>>(new Set()); useDisableBrowserZoom(); usePlaybackControls(); useEffect(() => { - const initializeProject = async () => { - if (projectId && (!activeProject || activeProject.id !== projectId)) { - try { - await loadProject(projectId); - } catch (error) { - console.error("Failed to load project:", error); - // If project doesn't exist, create a new one - await createNewProject("Untitled Project"); - } + const initProject = async () => { + + if (!projectId) return; + + if (activeProject?.id === projectId) { + return; + } + + if (handledProjectIds.current.has(projectId)) { + return; + } + + try { + await loadProject(projectId); + } catch (error) { + handledProjectIds.current.add(projectId); + + const newProjectId = await createNewProject("Untitled Project"); + router.replace(`/editor/${newProjectId}`); + return; } }; - initializeProject(); - }, [projectId, activeProject, loadProject, createNewProject]); + initProject(); + }, [projectId, activeProject?.id, loadProject, createNewProject, router]); return ( <EditorProvider> |
